"""
角色相关的 Pydantic 模型
用于 API 请求和响应的数据验证
"""
from typing import Optional
from pydantic import BaseModel, Field
from datetime import datetime


# 基础角色信息
class RoleBase(BaseModel):
    """角色基础信息"""
    role_id: str = Field(..., description="角色ID")
    role_name: str = Field(..., min_length=1, max_length=50, description="角色名称")


# 角色创建
class RoleCreate(RoleBase):
    """创建角色时的数据模型"""
    pass


# 角色更新
class RoleUpdate(BaseModel):
    """更新角色时的数据模型"""
    role_name: Optional[str] = Field(None, min_length=1, max_length=50, description="角色名称")


# 角色响应
class RoleResponse(RoleBase):
    """角色响应数据模型"""
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True


# 角色列表响应
class RoleListResponse(BaseModel):
    """角色列表响应"""
    total: int
    roles: list[RoleResponse]